package com.keensense.vcm.model;

import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 * @author lanjian
 * @date 2020/5/6 4:09 下午
 */
@XmlRootElement(name = "response")
public class VehicleSearchResponse extends BaseResponse {


    @XmlElementWrapper(name = "vehicleList")
    @XmlElement(name = "vehicle")
    private List<Vehicle> vehicleList;

    @XmlElement(name = "page")
    private Page page;

    @XmlElement
    private String resultCode;

    @XmlElement
    private Integer total;

    @XmlTransient
    public Page getPage() {
        return page;
    }

    public void setPage(Page page) {
        this.page = page;
    }

    @XmlTransient
    public String getResultCode() {
        return resultCode;
    }

    public void setResultCode(String resultCode) {
        this.resultCode = resultCode;
    }

    @XmlTransient
    public Integer getTotal() {
        return total;
    }

    public void setTotal(Integer total) {
        this.total = total;
    }

    @XmlTransient
    public List<Vehicle> getVehicleList() {
        return vehicleList;
    }

    public void setVehicleList(List<Vehicle> vehicleList) {
        this.vehicleList = vehicleList;
    }

    public static class Vehicle {

        @XmlElement
        private String alarmId;

        @XmlElement
        private String alarmSource;

        @XmlElement
        private String cameraId;

        @XmlElement
        private String cameraName;

        @XmlElement(name = "cameraSn")
        private String cameraSn;

        @XmlElement
        private String carType;

        @XmlElement
        private String card;

        @XmlElement
        private String carpendant;

        @XmlElement
        private String goods;

        @XmlElement
        private String domainCode;

        @XmlElement
        private String domainName;

        @XmlElement
        private String faceNumber;

        @XmlElement
        private String fileId;

        @XmlElement
        private String graffiti;

        @XmlElement
        private Long imageSaveTimestamp;

        @XmlElement
        private Long imageTimestamp;

        @XmlElement
        private String isAnalysis;

        @XmlElement
        private String licensedVehicle;

        @XmlElement
        private LprInfo lprInfo;

        @XmlElement
        private String mainbelt;

        @XmlElement
        private String maincall;

        @XmlElement
        private String napkinbox;

        @XmlElement
        private String obscuredPlate;

        @XmlElement
        private String picUrl;

        @XmlElement
        private String roofRack;

        @XmlElement
        private String spareTire;

        @XmlElement
        private String specialVehicleTypeIdx;

        @XmlElement
        private String stationId;

        @XmlElement
        private String sunroof;

        @XmlElement
        private String sunvisor;

        @XmlElement
        private String thumPicUrl;

        @XmlElement
        private String vehicleSub;

        @XmlElement
        private String vehiclebrand;

        @XmlElement
        private String vicebelt;

        @XmlElement
        private String vicedriver;

        @XmlElement
        private String caseFileId;

        @XmlElement
        private String vicesunvisor;

        @XmlElement
        private String year;

        @XmlElement
        private String yearlogo;

        @XmlTransient
        public String getAlarmId() {
            return alarmId;
        }

        public void setAlarmId(String alarmId) {
            this.alarmId = alarmId;
        }

        @XmlTransient
        public String getAlarmSource() {
            return alarmSource;
        }

        public void setAlarmSource(String alarmSource) {
            this.alarmSource = alarmSource;
        }

        @XmlTransient
        public String getCameraId() {
            return cameraId;
        }

        public void setCameraId(String cameraId) {
            this.cameraId = cameraId;
        }

        @XmlTransient
        public String getCameraName() {
            return cameraName;
        }

        public void setCameraName(String cameraName) {
            this.cameraName = cameraName;
        }

        @XmlTransient
        public String getCameraSn() {
            return cameraSn;
        }

        public void setCameraSn(String cameraSn) {
            this.cameraSn = cameraSn;
        }

        @XmlTransient
        public String getCarType() {
            return carType;
        }

        public void setCarType(String carType) {
            this.carType = carType;
        }

        @XmlTransient
        public String getCard() {
            return card;
        }

        public void setCard(String card) {
            this.card = card;
        }

        @XmlTransient
        public String getCarpendant() {
            return carpendant;
        }

        public void setCarpendant(String carpendant) {
            this.carpendant = carpendant;
        }

        @XmlTransient
        public String getGoods() {
            return goods;
        }

        public void setGoods(String goods) {
            this.goods = goods;
        }

        @XmlTransient
        public String getDomainCode() {
            return domainCode;
        }

        public void setDomainCode(String domainCode) {
            this.domainCode = domainCode;
        }

        @XmlTransient
        public String getDomainName() {
            return domainName;
        }

        public void setDomainName(String domainName) {
            this.domainName = domainName;
        }

        @XmlTransient
        public String getFaceNumber() {
            return faceNumber;
        }

        public void setFaceNumber(String faceNumber) {
            this.faceNumber = faceNumber;
        }

        @XmlTransient
        public String getFileId() {
            return fileId;
        }

        public void setFileId(String fileId) {
            this.fileId = fileId;
        }

        @XmlTransient
        public String getGraffiti() {
            return graffiti;
        }

        public void setGraffiti(String graffiti) {
            this.graffiti = graffiti;
        }

        @XmlTransient
        public Long getImageSaveTimestamp() {
            return imageSaveTimestamp;
        }

        public void setImageSaveTimestamp(Long imageSaveTimestamp) {
            this.imageSaveTimestamp = imageSaveTimestamp;
        }

        @XmlTransient
        public Long getImageTimestamp() {
            return imageTimestamp;
        }

        public void setImageTimestamp(Long imageTimestamp) {
            this.imageTimestamp = imageTimestamp;
        }

        @XmlTransient
        public String getIsAnalysis() {
            return isAnalysis;
        }

        public void setIsAnalysis(String isAnalysis) {
            this.isAnalysis = isAnalysis;
        }

        @XmlTransient
        public String getLicensedVehicle() {
            return licensedVehicle;
        }

        public void setLicensedVehicle(String licensedVehicle) {
            this.licensedVehicle = licensedVehicle;
        }

        @XmlTransient
        public LprInfo getLprInfo() {
            return lprInfo;
        }

        public void setLprInfo(LprInfo lprInfo) {
            this.lprInfo = lprInfo;
        }

        @XmlTransient
        public String getMainbelt() {
            return mainbelt;
        }

        public void setMainbelt(String mainbelt) {
            this.mainbelt = mainbelt;
        }

        @XmlTransient
        public String getMaincall() {
            return maincall;
        }

        public void setMaincall(String maincall) {
            this.maincall = maincall;
        }

        @XmlTransient
        public String getNapkinbox() {
            return napkinbox;
        }

        public void setNapkinbox(String napkinbox) {
            this.napkinbox = napkinbox;
        }

        @XmlTransient
        public String getObscuredPlate() {
            return obscuredPlate;
        }

        public void setObscuredPlate(String obscuredPlate) {
            this.obscuredPlate = obscuredPlate;
        }

        @XmlTransient
        public String getPicUrl() {
            return picUrl;
        }

        public void setPicUrl(String picUrl) {
            this.picUrl = picUrl;
        }

        @XmlTransient
        public String getRoofRack() {
            return roofRack;
        }

        public void setRoofRack(String roofRack) {
            this.roofRack = roofRack;
        }

        @XmlTransient
        public String getSpareTire() {
            return spareTire;
        }

        public void setSpareTire(String spareTire) {
            this.spareTire = spareTire;
        }

        @XmlTransient
        public String getSpecialVehicleTypeIdx() {
            return specialVehicleTypeIdx;
        }

        public void setSpecialVehicleTypeIdx(String specialVehicleTypeIdx) {
            this.specialVehicleTypeIdx = specialVehicleTypeIdx;
        }

        @XmlTransient
        public String getStationId() {
            return stationId;
        }

        public void setStationId(String stationId) {
            this.stationId = stationId;
        }

        @XmlTransient
        public String getSunroof() {
            return sunroof;
        }

        public void setSunroof(String sunroof) {
            this.sunroof = sunroof;
        }

        @XmlTransient
        public String getSunvisor() {
            return sunvisor;
        }

        public void setSunvisor(String sunvisor) {
            this.sunvisor = sunvisor;
        }

        @XmlTransient
        public String getThumPicUrl() {
            return thumPicUrl;
        }

        public void setThumPicUrl(String thumPicUrl) {
            this.thumPicUrl = thumPicUrl;
        }

        @XmlTransient
        public String getVehicleSub() {
            return vehicleSub;
        }

        public void setVehicleSub(String vehicleSub) {
            this.vehicleSub = vehicleSub;
        }

        @XmlTransient
        public String getVehiclebrand() {
            return vehiclebrand;
        }

        public void setVehiclebrand(String vehiclebrand) {
            this.vehiclebrand = vehiclebrand;
        }

        @XmlTransient
        public String getVicebelt() {
            return vicebelt;
        }

        public void setVicebelt(String vicebelt) {
            this.vicebelt = vicebelt;
        }

        @XmlTransient
        public String getVicedriver() {
            return vicedriver;
        }

        public void setVicedriver(String vicedriver) {
            this.vicedriver = vicedriver;
        }

        @XmlTransient
        public String getCaseFileId() {
            return caseFileId;
        }

        public void setCaseFileId(String caseFileId) {
            this.caseFileId = caseFileId;
        }

        @XmlTransient
        public String getVicesunvisor() {
            return vicesunvisor;
        }

        public void setVicesunvisor(String vicesunvisor) {
            this.vicesunvisor = vicesunvisor;
        }

        @XmlTransient
        public String getYear() {
            return year;
        }

        public void setYear(String year) {
            this.year = year;
        }

        @XmlTransient
        public String getYearlogo() {
            return yearlogo;
        }

        public void setYearlogo(String yearlogo) {
            this.yearlogo = yearlogo;
        }

    }

    public static class LprInfo {

        @XmlElement
        private String carColor;

        @XmlElement
        private String carDirection;

        @XmlElement
        private Coords coords;

        @XmlElement
        private String plateColor;

        @XmlElement
        private String plateType;

        @XmlElement
        private String plateSimilar;

        @XmlElement
        private Vcoords vcoords;

        @XmlElement
        private String plateNumber;

        @XmlTransient
        public String getCarColor() {
            return carColor;
        }

        public void setCarColor(String carColor) {
            this.carColor = carColor;
        }

        @XmlTransient
        public String getCarDirection() {
            return carDirection;
        }

        public void setCarDirection(String carDirection) {
            this.carDirection = carDirection;
        }

        @XmlTransient
        public Coords getCoords() {
            return coords;
        }

        public void setCoords(Coords coords) {
            this.coords = coords;
        }

        @XmlTransient
        public String getPlateColor() {
            return plateColor;
        }

        public void setPlateColor(String plateColor) {
            this.plateColor = plateColor;
        }

        @XmlTransient
        public String getPlateType() {
            return plateType;
        }

        public void setPlateType(String plateType) {
            this.plateType = plateType;
        }

        @XmlTransient
        public String getPlateSimilar() {
            return plateSimilar;
        }

        public void setPlateSimilar(String plateSimilar) {
            this.plateSimilar = plateSimilar;
        }

        @XmlTransient
        public String getPlateNumber() {
            return plateNumber;
        }

        public void setPlateNumber(String plateNumber) {
            this.plateNumber = plateNumber;
        }

        @XmlTransient
        public Vcoords getVcoords() {
            return vcoords;
        }

        public void setVcoords(Vcoords vcoords) {
            this.vcoords = vcoords;
        }

        public static class Coords {

            /**
             * bottom : 0 left : 0 right : 0 top : 0
             */

            private Integer bottom;
            private Integer left;
            private Integer right;
            private Integer top;

            @XmlTransient
            public Integer getBottom() {
                return bottom;
            }

            public void setBottom(Integer bottom) {
                this.bottom = bottom;
            }

            @XmlTransient
            public Integer getLeft() {
                return left;
            }

            public void setLeft(Integer left) {
                this.left = left;
            }

            @XmlTransient
            public Integer getRight() {
                return right;
            }

            public void setRight(Integer right) {
                this.right = right;
            }

            @XmlTransient
            public Integer getTop() {
                return top;
            }

            public void setTop(Integer top) {
                this.top = top;
            }
        }

        public static class Vcoords {

            @XmlElement
            private Integer bottom;

            @XmlElement
            private Integer left;

            @XmlElement
            private Integer right;

            @XmlElement
            private Integer top;

            @XmlTransient
            public Integer getBottom() {
                return bottom;
            }

            public void setBottom(Integer bottom) {
                this.bottom = bottom;
            }

            @XmlTransient
            public Integer getLeft() {
                return left;
            }

            public void setLeft(Integer left) {
                this.left = left;
            }

            @XmlTransient
            public Integer getRight() {
                return right;
            }

            public void setRight(Integer right) {
                this.right = right;
            }

            @XmlTransient
            public Integer getTop() {
                return top;
            }

            public void setTop(Integer top) {
                this.top = top;
            }
        }
    }

    public static class Page {

        /**
         * currentPage : 1 displayNum : 0 hasNext : false hasPre : false pageSize : 2 totalCount : 1000
         */

        @XmlElement
        private Integer currentPage;

        @XmlElement
        private Integer displayNum;

        @XmlElement
        private Boolean hasNext;

        @XmlElement
        private Boolean hasPre;

        @XmlElement
        private Integer pageSize;

        @XmlElement
        private Integer totalCount;

        @XmlTransient
        public Integer getCurrentPage() {
            return currentPage;
        }

        public void setCurrentPage(Integer currentPage) {
            this.currentPage = currentPage;
        }

        @XmlTransient
        public Integer getDisplayNum() {
            return displayNum;
        }

        public void setDisplayNum(Integer displayNum) {
            this.displayNum = displayNum;
        }

        @XmlTransient
        public Boolean isHasNext() {
            return hasNext;
        }

        public void setHasNext(Boolean hasNext) {
            this.hasNext = hasNext;
        }

        @XmlTransient
        public Boolean isHasPre() {
            return hasPre;
        }

        public void setHasPre(Boolean hasPre) {
            this.hasPre = hasPre;
        }

        @XmlTransient
        public Integer getPageSize() {
            return pageSize;
        }

        public void setPageSize(Integer pageSize) {
            this.pageSize = pageSize;
        }

        @XmlTransient
        public Integer getTotalCount() {
            return totalCount;
        }

        public void setTotalCount(Integer totalCount) {
            this.totalCount = totalCount;
        }
    }
}
